package com.cardone.platform.authority.service;

import java.util.List;
import java.util.Map;

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;

import com.cardone.common.cache.support.CacheEvictSupport;
import com.cardone.common.dto.PaginationDto;
import com.cardone.common.cache.Caches;
import com.cardone.platform.authority.dto.PeVaRuTransactModeDto;

/**
 * 许可、验证规则与处理模式服务
 *
 * @author yaohaitao
 */
public interface PeVaRuTransactModeService {
	/**
	 * spring bean id
	 */
	String BEAN_ID = "com.cardone.platform.authority.service.PeVaRuTransactModeService";

	/**
	 * 保存:许可、验证规则与处理模式
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param savePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	@Deprecated
	@CacheEvict(value = PeVaRuTransactModeService.BEAN_ID, allEntries = true)
	<P> P saveByIdOrCode(Class<P> mappedClass, PeVaRuTransactModeDto savePeVaRuTransactMode);

	/**
	 * 保存:许可、验证规则与处理模式
	 * 
	 * @param savePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	@Deprecated
	@CacheEvict(value = PeVaRuTransactModeService.BEAN_ID, allEntries = true)
	PeVaRuTransactModeDto saveByIdOrCode(PeVaRuTransactModeDto savePeVaRuTransactMode);

	/**
	 * 插入
	 * 
	 * @param insertPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 影响行数
	 */
	@Deprecated
	@CacheEvict(value = PeVaRuTransactModeService.BEAN_ID, allEntries = true)
	int insertByCode(PeVaRuTransactModeDto insertPeVaRuTransactMode);
	
	/**
	 * 删除
	 * 
	 * @param deletePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 影响行数
	 */
	@Deprecated
	@CacheEvict(value = PeVaRuTransactModeService.BEAN_ID, allEntries = true)
	int deleteByIds(PeVaRuTransactModeDto deletePeVaRuTransactMode);

	/**
	 * 更新
	 * 
	 * @param updatePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 影响行数
	 */
	@Deprecated
	@CacheEvict(value = PeVaRuTransactModeService.BEAN_ID, allEntries = true)
	int updateByCode(PeVaRuTransactModeDto updatePeVaRuTransactMode);

	/**
	 * 查询
	 * 
	 * @param requiredType
	 *            返回类型
	 * 
	 * @param readPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * @return 返回数据
	 */
	@Deprecated
	@Cacheable(value = PeVaRuTransactModeService.BEAN_ID, key = Caches.KEY_1)
	Integer readByCodeNqIdForCount(PeVaRuTransactModeDto readPeVaRuTransactMode);
	
	/**
	 * 查询
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param findPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * @return 返回对象
	 */
	@Deprecated
	@Cacheable(value = PeVaRuTransactModeService.BEAN_ID, key = Caches.KEY_2)
	<P> P findById(Class<P> mappedClass, PeVaRuTransactModeDto findPeVaRuTransactMode);

	/**
	 * 查询
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param findPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 返回对象
	 */
	@Deprecated
	@Cacheable(value = PeVaRuTransactModeService.BEAN_ID, key = Caches.KEY_2)
	<P> P findByCodeOrId(Class<P> mappedClass, PeVaRuTransactModeDto findPeVaRuTransactMode);

	/**
	 * 查询
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param findListPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象集合
	 */
	@Deprecated
	@Cacheable(value = PeVaRuTransactModeService.BEAN_ID, key = Caches.KEY_2)
	<P> List<P> findListByLikeCode(Class<P> mappedClass, PeVaRuTransactModeDto findListPeVaRuTransactMode);

	/**
	 * 查询
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @return 许可、验证规则与处理模式对象集合
	 */
	@Deprecated
	@Cacheable(value = PeVaRuTransactModeService.BEAN_ID, key = Caches.KEY_1)
	<P> List<P> findList(Class<P> mappedClass);

	/**
	 * 分页
	 * 
	 * @param mappedClass
	 *            返回类型
	 * 
	 * @param paginationPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式分页对象
	 */
	@Deprecated
	@Cacheable(value = PeVaRuTransactModeService.BEAN_ID, key = Caches.KEY_2)
	<P> PaginationDto<P> paginationByLikeCode(Class<P> mappedClass, PeVaRuTransactModeDto paginationPeVaRuTransactMode);
}